import launch.launch_description_sources
import launch, launch_ros
from ament_index_python.packages import get_package_share_directory

def generate_launch_description():
    # 条件判断是否启动 rqt
    action_declare_startup_rqt = launch.actions.DeclareLaunchArgument('startup_rqt', default_value = "False")
    startup_rqt = launch.substitutions.LaunchConfiguration('startup_rqt', default = "False")
    
    # 1.启动其他launch
    multisim_launch_path = [get_package_share_directory('turtlesim'), '/launch/', 'multisim.launch.py']
    action_include_launch = launch.actions.IncludeLaunchDescription(
        launch.launch_description_sources.PythonLaunchDescriptionSource(
            multisim_launch_path
        )
    )
    # 2.打印数据
    
    action_log_info = launch.actions.LogInfo(msg = str(multisim_launch_path))
    # 3.执行进程，其实就是执行一个命令行 rqt
    action_topic_list = launch.actions.ExecuteProcess(
        condition = launch.conditions.IfCondition(startup_rqt),
        cmd = ['rqt']
    )
    # 4.组织动作成组，把多个动作放到一组
    action_group = launch.actions.GroupAction([
        # 5.动作定时器(设定动作启动的时间)
        launch.actions.TimerAction(period = 2.0, actions = [action_include_launch]),    # 在第2秒的时候启动action_include_launch
        launch.actions.TimerAction(period = 4.0, actions = [action_topic_list]) # 在第4秒的时候启动action_topic_list
    ])
    
    return launch.LaunchDescription([
        action_declare_startup_rqt,
        action_log_info,
        action_group
        ])
